package com.pb.b2b.bean;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.pb.b2b.service.CategoryLanguageService;
import com.pb.b2b.util.FacesUtils;

@Component
@Scope("view")
@ManagedBean(name = "categoryBean")
public class CategoryBean extends CategoryBaseBean {
	private static final long serialVersionUID = 1L;

	// @Autowired
	// LanguageService languageService;
	//
	// @Autowired
	// CategoryService categoryService;

	@Autowired
	CategoryLanguageService categoryLanguageService;

	// public void treeInit() {
	// Map<Long, TreeNode> treeMap = new HashedMap();
	// root = new DefaultTreeNode("Root", null);
	//
	// for (int index = 0; index < defaultCategoryLanguages.size(); index++) {
	// CategoryLanguage categoryLanguage = defaultCategoryLanguages.get(index);
	// if (categoryLanguage.getCategory().getParentCategory() == null) {
	// treeMap.put(categoryLanguage.getCategory().getId(), new
	// DefaultTreeNode(categoryLanguage, root));
	// } else {
	// if
	// (treeMap.get(categoryLanguage.getCategory().getParentCategory().getId())
	// != null) {
	// treeMap.put(
	// categoryLanguage.getCategory().getId(),
	// new DefaultTreeNode(categoryLanguage,
	// treeMap.get(categoryLanguage.getCategory().getParentCategory().getId())));
	// } else {
	// defaultCategoryLanguages.add(categoryLanguage);
	// }
	// }
	// if (treeMap.get(categoryLanguage.getCategory().getId()) != null) {
	// treeMap.get(categoryLanguage.getCategory().getId()).setExpanded(true);
	// }
	// }
	// }

	@PostConstruct
	public void init() {
		defaultCategoryLanguages = categoryLanguageService.getDefaultCategoryLanguages();
		if (hasError()) {
			return;
		}
		showRootCategory = false;
		treeInit();
	}

	@Override
	public String executeAction() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String confirmAction() {
		return null;
	}

	// public String initCreateCategory() {
	//
	// showRootCategory = true;
	// languageList = languageService.findAll(Language.class);
	// newCategory = new Category();
	// newCategoryLanguages = new ArrayList<CategoryLanguage>();
	// for (Language language : languageList) {
	// CategoryLanguage categoryLanguage = new CategoryLanguage();
	// categoryLanguage.setLanguage(language);
	// categoryLanguage.setCategory(newCategory);
	// newCategoryLanguages.add(categoryLanguage);
	// }
	// treeInit();
	// return "createCategory";
	// }

	/* METHOD */

	// public String changeCategoryConfirmAction() {
	// if (selectedNode == null) {
	// FacesUtils.addMessage(FacesMessage.SEVERITY_ERROR,
	// "VALIDATION_KATEGORI_SECILMELI");
	// return RETURN_ERROR;
	// }
	// return "changeCategory";
	// }

	// public String changeStatusConfirmAction() {
	// if (selectedNode == null) {
	// FacesUtils.addMessage(FacesMessage.SEVERITY_ERROR,
	// "VALIDATION_KATEGORI_SECILMELI");
	// return RETURN_ERROR;
	// }
	//
	// selectedCategoryLanguage = ((CategoryLanguage) selectedNode.getData());
	// newStatus = !selectedCategoryLanguage.getCategory().isStatus();
	//
	// return "changeCategoryStatus";
	// }
	//
	// public String changeStatusExecuteAction() {
	// Category category = selectedCategoryLanguage.getCategory();
	// category.setStatus(newStatus);
	// category.setCategoryLanguages(new HashSet<CategoryLanguage>());
	// categoryService.saveOrUpdate(category);
	// return RETURN_SUCCESS;
	// }

	// public String changeRowConfirmAction() {
	// if (selectedNode == null) {
	// FacesUtils.addMessage(FacesMessage.SEVERITY_ERROR,
	// "VALIDATION_KATEGORI_SECILMELI");
	// return RETURN_ERROR;
	// }
	// return "changeCategoryRow";
	// }

	public String initChangeCategory() {
		if (selectedNode == null) {
			FacesUtils.addMessage(FacesMessage.SEVERITY_ERROR, "VALIDATION_KATEGORI_SECILMELI");
			return RETURN_ERROR;
		}

		FacesUtils.sessionMapPut("selectedNode", selectedNode);
		return "changeCategory";
	}

	/* GETTER _ SETTER */

}
